﻿using System;
using System.Reflection;

namespace Having.Site.Attr
{
    /// <summary>
    /// (只能应用在静态方法上)表示该方法可以通过API来访问
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
    public class API : System.Attribute
    {
        /// <summary>
        /// 该接口是否只允许在内网使用
        /// </summary>
        public bool OnlyIntranet { set; get; }
        /// <summary>
        /// 标志该方法的使用权限
        /// </summary>
        public MethodType MT { set; get; }
        /// <summary>
        /// 字段集合(默认为空数组)
        /// </summary>
        public string[] ExAttrs { get; set; }
        /// <summary>
        /// 标识字段显示还是排除（默认是排除，false）
        /// </summary>
        public bool Retain { set; get; }
        /// <summary>
        /// 标志加密方式（默认不加密）
        /// </summary>
        public DataType EncryType { set; get; }

        ///// <summary>
        ///// 执行前处理（异步处理）
        ///// </summary>
        //public Action BeforeAsy { set; get; }

        ///// <summary>
        ///// 执行后的处理（异步处理）
        ///// </summary>
        //public Action CompleteAsy { set; get; }

        /// <summary>
        /// 配置
        /// </summary>
        public API()
        {
            OnlyIntranet = false;
            MT = MethodType.Default;
            ExAttrs = new string[] { };
            Retain = false;
            EncryType = DataType.normal;
            //BeforeAsy = null;
            //CompleteAsy = null;
        }
    }
}
